#include "gd32f20x.h"
#include "gd32f20x_gpio.h"
#include "gd32f20x_rcc.h"

/*****************************************************************************//*!
* @brief   	port init.
*               
* @param   none
*
* @return  none
*
* @ Pass/ Fail criteria: none
*****************************************************************************/
void PortInit()
{
	GPIO_InitPara GPIO_InitStructure;
	
	RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_AF, ENABLE);
    RCC_APB2PeriphReset_Enable(RCC_APB2PERIPH_AF, ENABLE);
    RCC_APB2PeriphReset_Enable(RCC_APB2PERIPH_AF, DISABLE); 
	
	RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOA, ENABLE);
	RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOB, ENABLE);
	RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOC, ENABLE);
	RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOD, ENABLE);
    RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOE, ENABLE);
    RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOF, ENABLE);
    
	GPIO_InitStructure.GPIO_Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_10MHZ;
    GPIO_Init(GPIOF,&GPIO_InitStructure);
    
	
	GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_IPU;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_10MHZ;
    GPIO_Init(GPIOA,&GPIO_InitStructure);	
    
	GPIO_InitStructure.GPIO_Pin = GPIO_PIN_13;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_IPU;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_10MHZ;
    GPIO_Init(GPIOC,&GPIO_InitStructure);	
    
    GPIO_InitStructure.GPIO_Pin = GPIO_PIN_14;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_IPU;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_10MHZ;
    GPIO_Init(GPIOB,&GPIO_InitStructure);	
}
